/********************************************************************
*	MEF an XML UI framework
*	Filename:	MEFStringHash.h
*	Author:		Mikael Eriksson
*
********************************************************************/


#if !defined(_CMEFSTRINGHASH_H)
#define _CMEFSTRINGHASH_H

#include <map>
#include "MEFString.h"

using namespace std;

class CMEFStringHash
{
public:
	CMEFStringHash(){}
	virtual ~CMEFStringHash(){iHashTable.clear();}

	bool Empty(){return iHashTable.empty();}
	bool Add(const CMEFString& aKey, const CMEFString& aValue)
	{ 
		ret = iHashTable.insert(pair<CMEFString,CMEFString>(aKey,aValue));
		return ret.second; 
	}
	void Remove(const CMEFString& aKey)
	{
		iHashTable.erase(aKey);   		
	}
	const CMEFString& Find(const CMEFString& aKey)
	{
		map<CMEFString,CMEFString>::iterator it;
		it = iHashTable.find(aKey);
		return it->second;
	}
	unsigned int Size(){return iHashTable.size();}
	
	CMEFStringHash& operator=(const CMEFStringHash& aOrg)
	{
		iHashTable = aOrg.iHashTable;
		ret = aOrg.ret;
		return *this;
	}

private:
	map<CMEFString, CMEFString> iHashTable;
	pair<map<CMEFString,CMEFString>::iterator, bool> ret;

};

#endif //_CMEFSTRINGHASH_H